/*
 * 例题(15.3) 汉诺塔
 *
 * 题目链接：https://programming.pku.edu.cn/probset/c4b75386cfd8411991908475c4b91bc6/0c597d3b24c3432fba616e6cd7a05b3e/
 * 作者：lyazj <seeson@pku.edu.cn>
 *
 * 本题所需主要知识点：
 *   - 函数
 *   - 递归
 */

#include <stdio.h>

void move(int n, char from, char to, char via)
{
  if(n == 1) {
    printf("%c->%c\n", from, to);
    return;
  }
  move(n - 1, from, via, to);
  move(1, from, to, via);
  move(n - 1, via, to, from);
}

int main(void)
{
  int n;
  scanf("%d", &n);
  if(n > 0) move(n, 'A', 'C', 'B');
  return 0;
}
